【レポート】突然「機械学習プロジェクトをやってくれ!」と言われて困ってませんか? ビジネスに適用するための機械学習システム開発プロジェクトの進め方 #AWSSummit
データアナリティクス事業本部の貞松です。
本記事は、AWS Summit Online Japanのライブセッションレポートです。 対象セッションは、9/8(火)配信分のTrack5の第1セッション「突然「機械学習プロジェクトをやってくれ!」と言われて困ってませんか? ビジネスに適用するための機械学習システム開発プロジェクトの進め方」です。
2020.9.9更新 アーカイブ動画の埋め込みとセッション資料へのリンクを追加しました!
2020.9.10更新 アーカイブ動画とセッション資料へのリンクを修正しました
3行まとめ
- 機械学習システム開発のプロセスは、ビジネス課題を起点とする試行錯誤のループである。
- 機械学習プロジェクトを成功させるポイントは、いきなり完璧を目指さず、試行錯誤のループを高速に回すこと、変更に柔軟に対応することである。
- AWSが提供するAI/MLサービスは幅広いビジネス課題それぞれに対応できるサービスが用意されている。
アーカイブ動画&スライド資料
セッションの動画と資料はこちらからご参照ください。
セッションレポート
セッション情報
- カテゴリ: AWSセッション
- セッション番号: AWS-02
- スピーカー: AWSJ 上総 虎智さん
セッションの構成
- セッションに含まれること
- 機械学習システム開発プロジェクトの流れ
- 機械学習プロジェクトを成功させる為のポイント
- AWSのAI/MLサービスについての概要
- セッションに含まれないこと
- 機械学習そのものやアルゴリズムについて
- AWSのAI/MLサービスの詳細
機械学習システム開発のプロセス
- ビジネス課題(目的)ありきでスタートすることが重要(機械学習を使うことが目的では無い)
- 試行錯誤のループを回して評価することを前提とする
- 試行錯誤のループには2種類ある
- 機械学習モデルの開発におけるループ
- データ収集: 活用可能なデータの追加やデータの変遷への対応
- 機械学習: 特徴量作成やアルゴリズムの検討
- 評価: 機械学習モデルの継続的な評価
- 機械学習のビジネス適用からフィードバックを得るループ
- ビジネス課題への機械学習モデルの適用と評価
- ビジネスのKPIと機械学習課題を紐付ける
- 適用後のフィードバックを得て機械学習モデルを改善
- 機械学習モデルの開発におけるループ
機械学習プロジェクトを成功させるポイント
ポイント1: 前述の2つのループを如何に高速に回せるか
- ビジネス価値に繋がらないものは「なるべく作らない」を考える
- 試行錯誤を阻害する要因
- 機械学習モデル開発における試行錯誤をする為の環境構築が大変
- 開発したモデルをシステムに組み込むのに時間が掛かりすぎる
- 開発したモデルがビジネスに貢献しなかった
- AWSでは機械学習の開発におけるUndifferentiated Heavy Lifting(他との差別化に繋がらない重労働)を定義している
- 開発環境構築
- 必要なリソースの見積もりと購入の決断
- 開発チームで均一な開発環境構築
- フレームワークのインストール、バージョン管理
- 機械学習モデルの学習
- CPU/GPUなど、用途にあったハードウェア環境提供
- スケーラブルな分散学習環境と広帯域な通信環境の構築
- 運用
- 推論環境の準備とモデルのホスティング
- 機械学習との別のスキルセット
- 開発環境構築
ポイント2: 最初から高度で完璧な解決を目指さない
- 開発当初は無理に独自の機械学習モデルを開発せず、手間のかからないものから効果を確認する
- ビジネスへの貢献が評価され次第、徐々に高度化させていく
- 独自モデルの開発を行わず、学習済みモデルを活用する
- 独自の学習データを準備して、提供されているアルゴリズムによりモデルの学習を行い活用する
- 独自の学習データと独自のアルゴリズムを用いてモデルの学習を行い活用する
ポイント3: 試行錯誤の中で取り組む内容が変わることを前提にする
- マネージドサービスを活用することで変更に対して柔軟に対応することで素早い試行錯誤のループを実現する
- 多様なサービスに対応できるようにデータを収集、保存する
- 必要になるデータのフォーマットやファイル形式、保存場所などを想定、設計する
AWSが提供するAI/MLサービス
- AWSでは、前述のプロセスを高速に回して、機械学習プロジェクトを成功に導く為のサービスが多数用意されている
- これらのサービスのスタックは大きく3つの層に分かれている
- AIサービス (SaaS群、Rekognition、Personalizeなど)
- MLサービス (PaaS、要するにSageMakerを指す)
- MLフレームワーク (IaaS、専用のAMIやDockerコンテナなど)
- 全体像についてはこちらを参照 → https://aws.amazon.com/jp/machine-learning/
ユースケース:画像認識ソリューションを開発したい
- AWSのAIサービスを活用したソリューションの例を解説
- 基本的には猫の画像を判定したい、という要件
- 前述の試行錯誤プロセスに沿って、フェーズが進むごとに高度化するイメージ
フェーズ1
- 要件
- 猫の飼い主さんが、たくさんの写真(画像)の中から、猫の画像を判定したい(猫が写っているものをより分けたい)
- 解決策
- Rekognitionを使用して猫の画像を判定する
フェーズ2
- 要件
- 個別の猫(タマだったりミケだったり)を判別したい
- 解決策
- Rekognitionのカスタムラベルを使用して、個別の猫画像を学習させる
- 学習済みのモデルで画像を判別する
フェーズ3
- 要件
- さらに画像判定の精度を高めたい、もっと細かい分類が必要、など…
- 解決策
- SageMakerを利用して、独自モデルの開発を試みる
- 本セッション中ではこれに関する具体例は割愛
セッションに対する所感・考察
ビジネス課題ありきで、試行錯誤のプロセスを高速に回す、という大前提については全面的に同意という感想です。
機械学習プロジェクト、機械学習のモデル開発においては、そもそも最初から結果を見積もることが非常に困難である為、こういったアプローチに成らざるを得ないというのが正直なところかと思います。
その上で、ビジネス課題に合わせて、最小限のコストで成果が出せるのであれば、不用意に独自開発せず、既存サービスの組合せによって解決を試みたり、徐々に改善のプロセスに載せていくのが現状のベストプラクティスであると考えられます。
まとめ
セッションタイトルの通り、具体的なビジネスイメージよりはプロジェクトの進め方にフォーカスした内容でした。
機械学習の基礎理論やフレームワーク・サービスの知識も重要ですが、ビジネスへの適用については、本セッションのような前提を踏まえることが非常に重要であると言えます。
試行錯誤のプロセスと各フェーズにおける手段の選定を正しく実施することで、プロジェクトを成功に導いていきたいです。